package com.jacklei.ch16;
/*
* 给你一个整数数组 nums ，其中元素已经按 升序 排列，请你将其转换为一棵 高度平衡 二叉搜索树。

高度平衡 二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树。

 

示例 1：


输入：nums = [-10,-3,0,5,9]
输出：[0,-3,9,-10,null,5]
解释：[0,-10,5,null,-3,null,9] 也将被视为正确答案：

示例 2：


输入：nums = [1,3]
输出：[3,1]
解释：[1,null,3] 和 [3,1] 都是高度平衡二叉搜索树。
 

提示：

1 <= nums.length <= 104
-104 <= nums[i] <= 104
nums 按 严格递增 顺序排列

来源：力扣（LeetCode）
链接：https://leetcode.cn/problems/convert-sorted-array-to-binary-search-tree
著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。*/


import com.jacklei.ch15.TreeNode;

public class ConvertSortedArrayToBinarySearchTree {
    public TreeNode sortedArrayToBST(int[] nums) {
        int length = nums.length;

        TreeNode head = toBSTNext(nums,0,length-1);
        return head;
    }

    public TreeNode toBSTNext(int[] nums, int i,int j){
        if(i>j) return null;
        int mid = (j-i)/2 + i;
        TreeNode head = new TreeNode(nums[mid]);
        head.left = toBSTNext(nums,i,mid -1);
        head.right = toBSTNext(nums,mid +1,j);
        return head;
    }

}
